Typical computing devices include a number of general purpose input/output (“GPIO”) pins included in the platform chipset or in the platform system-on-a-chip. GPIO pins may support reading and writing digital data, and may generate hardware interrupts for the computing device. Typically, GPIO pins are multi-purpose and may be configured by the computing device for particular applications. For example, GPIO pins may be used to drive, bit-bang, or otherwise control platform-specific features such as buttons, indicators (e.g., LEDs), switches, or sensors (e.g., lid closing sensors, docking port sensors, drive insertion sensors, etc.).
Typical computing devices include one or more hardware GPIO controllers implemented in the chipset or main processor to control the GPIO pins. Software or firmware on the computing device may interact with the hardware GPIO controller by reading from or writing to particular registers or memory addresses associated with the hardware GPIO controller. The advanced configuration and power interface (ACPI) specification provides one example of a firmware interface to hardware GPIO pins. Typically, operating systems vendors specify minimum required hardware resources, including specific hardware GPIO pins that must be included in the platform chipset.